#ifndef _GPIO_PIN_H
#define _GPIO_PIN_H

// 有部分引脚是没有被用到的，这里为了方便就直接写出来了
// =======================================GPIO_PIN=======================================
#define GPIO_PIN_1   0x01
#define GPIO_PIN_2   0x02
#define GPIO_PIN_3   0x03
#define GPIO_PIN_4   0x04
#define GPIO_PIN_5   0x05
#define GPIO_PIN_6   0x06
#define GPIO_PIN_7   0x07
#define GPIO_PIN_8   0x08
#define GPIO_PIN_9   0x09
#define GPIO_PIN_10  0x0A
#define GPIO_PIN_11  0x0B
#define GPIO_PIN_12  0x0C
#define GPIO_PIN_13  0x0D
#define GPIO_PIN_14  0x0E
#define GPIO_PIN_15  0x0F
#define GPIO_PIN_16  0x10
#define GPIO_PIN_17  0x11
#define GPIO_PIN_18  0x12
#define GPIO_PIN_19  0x13
#define GPIO_PIN_20  0x14
#define GPIO_PIN_21  0x15
#define GPIO_PIN_22  0x16
#define GPIO_PIN_23  0x17
#define GPIO_PIN_24  0x18
#define GPIO_PIN_25  0x19
#define GPIO_PIN_26  0x1A
#define GPIO_PIN_27  0x1B
#define GPIO_PIN_28  0x1C
#define GPIO_PIN_29  0x1D
#define GPIO_PIN_30  0x1E
#define GPIO_PIN_31  0x1F
#define GPIO_PIN_32  0x20
#define GPIO_PIN_33  0x21
#define GPIO_PIN_34  0x22
#define GPIO_PIN_35  0x23
#define GPIO_PIN_36  0x24
#define GPIO_PIN_37  0x25
#define GPIO_PIN_38  0x26
#define GPIO_PIN_39  0x27
#define GPIO_PIN_40  0x28
// =======================================GPIO_PIN_Mode=======================================

// =======================================GPIO_PIN_Mode=======================================
#define INPUT             0x01
// Changed OUTPUT from 0x02 to behave the same as Arduino pinMode(pin,OUTPUT) 
// where you can read the state of pin even when it is set as OUTPUT
#define OUTPUT            0x03 
#define PULLUP            0x04
#define INPUT_PULLUP      0x05
#define PULLDOWN          0x08
#define INPUT_PULLDOWN    0x09
#define OPEN_DRAIN        0x10
#define OUTPUT_OPEN_DRAIN 0x13
#define ANALOG            0xC0
// =======================================GPIO_PIN_Mode=======================================

// =======================================Interrupt Modes=======================================
#define DISABLED  0x00
#define RISING    0x01
#define FALLING   0x02
#define CHANGE    0x03
#define ONLOW     0x04
#define ONHIGH    0x05
#define ONLOW_WE  0x0C
#define ONHIGH_WE 0x0D
// =======================================Interrupt Modes=======================================

#endif
